home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Graphics / Misc / Wood.0.72 / Sources / LispDoc.bproj / lexer.lm next >
Encoding:
Text File  |  1994-06-05  |  918 b   |  55 lines

  1. %{
  2.  
  3. #import <appkit/appkit.h>
  4. #import <ansi/stdlib.h>
  5. #import <ansi/string.h>
  6. #import <ansi/math.h>
  7. #import <bsd/sys/param.h>
  8. #import "Tree.h"
  9. #import "y.tab.h"
  10.  
  11. #undef YY_INPUT
  12. #define YY_INPUT(b, r, ms) (r = my_yyinput(b, ms))
  13.  
  14. static int my_yyinput(char *buf, int max_size);
  15. static NXStream *curStream;
  16.  
  17. %}
  18.  
  19. let        [_a-zA-Z]
  20. alnum    [-_a-zA-Z0-9]
  21.  
  22. %%
  23.  
  24. "("                            return LP;
  25. ")"                            return RP;
  26. "Method"                    return LISPKEY;
  27. "Function"                    return LISPKEY;
  28.  
  29. {let}{alnum}*                { 
  30.                                 lispdocyylval.name = NXCopyStringBuffer(lispdocyytext);
  31.                                 return NAME;
  32.                             }
  33. \"[^\"]*\"                    {
  34.                                 lispdocyylval.name = NXCopyStringBuffer(lispdocyytext);
  35.                                 return DESCRIPTION;
  36.                             }
  37.  
  38. %%
  39.  
  40. void lispdocPrepareTextToScan(NXStream *text)
  41. {
  42.     curStream = text;
  43. }
  44.      
  45. static int my_yyinput(char *buf, int max_size)
  46. {
  47.     return NXRead(curStream, (void *) buf, max_size * sizeof(char));
  48. }
  49.  
  50. int lispdocyywrap()
  51. {
  52.     return 1;
  53. }
  54.  
  55.